

# 分数转小数
# 思路：结果有三种情况：1、整数，2、有限不循环小数，3、有限循环小数
# 余数乘以10，再除以除数，直到相同的余数出现，说明开始循环。
class Solution:
    def fractionToDecimal(self, numerator: int, denominator: int) -> str:
        shang, yu_shu = divmod(abs(numerator), abs(denominator))
        sign = '-' if numerator * denominator < 0 else ''
        res = sign + str(shang)

        if yu_shu == 0:
            return res
        else:
            res += '.'

        # 有的结果是有限循环小数，有的是有限不循环函数，不需要括号
        xun_huan = [yu_shu]
        res_list = []
        while yu_shu:
            shang, yu_shu = divmod(yu_shu * 10, abs(denominator))
            res_list.append(str(shang))

            if yu_shu in xun_huan:
                res_list.insert(xun_huan.index(yu_shu), '(')
                res_list += ")"
                break
            xun_huan.append(yu_shu)

        res += ''.join(res_list)

        return res


if __name__ == "__main__":
    s = Solution()
    res = s.fractionToDecimal(1, 6)
    print("res: ", res)
